module modulate_2FSK(clk,rst , x, y);
input clk, rst;//时钟周期信号与复位信号
input x;
output y;	

reg [1:0] cnt1;//y_f1分频计数器
reg cnt2;      //y_f2分频计数器
reg y_f1, y_f2; //产生的2个不同频率的信号
	
// 利用2位计数器cnt1实现4分频，分频之后的信号为y_f1
always@(posedge clk or negedge rst)
begin
	if(!rst)	// rst是低电平有效
		begin
			cnt1 <= 0;
			y_f1 <= 0;
		end
	else
		begin
			if(cnt1 == 2'b11)   //产生0、1、2、3、0、1、···周期信号
				begin
					cnt1 <= 0;
					y_f1 <= ~y_f1;
				end
			else
				cnt1 <= cnt1 + 1;
		end
end
	
// 利用1位计数器cnt2实现2分频，分频之后的信号为f2
always@(posedge clk or negedge rst)
begin
	if(!rst)	//rst是低电平有效
		begin
			cnt2 <= 0;
			y_f2 <= 0;
		end
	else
		begin
			if(cnt2 == 2'b1)
				begin
					cnt2 <= 0;
					y_f2 <= ~y_f2;
				end
			else
				cnt2 <= cnt2 + 1;
		end
end
		
assign y = (x==1)? y_f1 : y_f2;  
/*always @(posedge clk)  //对输入进行选择判决，产生不同频率波形输出
begin
	if(x == 1'b0)
		y<=y_f2;
	else
		y<=y_f1;
end*/
endmodule
